
        <html>
			<head>
			     <title>物联网操作系统安全性分析 - bt0sea</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/wireless/8338">http://drops.wooyun.org/wireless/8338</a></h1>
				
      <p>
        <h1>0x00 前言</h1>

<hr />

<p>物联网目前是继移动互联网之后的又一个未来IT发展的蓝海。智能设备的不断涌现已经在不知不觉中占领我们的生活，颠覆我们的原有的思维模式，记得前几年我还带着一块天梭的机械手表，近段时间地铁好多人都佩戴iWatch等智能手表。还有智能手环、智能灯等在不断的改变我们的生活方式。那么这些智能设备具体的IT架构是什么？他们的安全性设计如何？对于信息安全工作者，有必要研究一下。</p>

<p>物联网操作系统，其实和传统的windows操作系统大同小异，但是经过一段时间的调研，才发现它不光由本地物联网设备上的操作系统组成，还包括提供物联网终端设备支持的云端架构。所以，我们的安全研究范围锁定在以下3个方面：</p>

<ol>
<li>IoT终端和云端通讯协议的安全</li>
<li>物联网终端安全</li>
<li>云端IT架构的安全性</li>
</ol>

<!--more-->

<h1>0x01 物联网云协议安全性分析</h1>

<hr />

<p>针对于智能家居等物联网设备，接入到互联网进行数据交换，安全风险性就非常大，如果处理不好，可能就会像黑客电影中桥段：通过网络把你家的智能门锁打开。</p>

<p>那么，物联网操作系统具体怎么连接互联网呢？</p>

<p><img src="http://static.wooyun.org//drops/20150910/2015091006270956204pic1.jpg" alt="" /></p>

<p>其中物联网终端（例如：灯泡）有两种连接方式，</p>

<ol>
<li>连接IoT gateway网关，再通过IoT gateway网关 连接家里的wifi路由器上网。</li>
<li>物联网设备直接通过自己的wifi模块（或者直接集成GPRS/3G/4G连接模块）连接家中路由器上网。</li>
</ol>

<p>这两种连接方式都有现实存在的意思，直连的一般都是大型家电设备，因为节点量比较少，互联网可以通过物联网协议直接控制，wifi模块信号强。但是像插座、灯泡这种小的终端设备还是连接到IoT gateway网关中转后再连接互联网。</p>

<p>那么物联网协议都有哪些呢？</p>

<p><img src="http://static.wooyun.org//drops/20150910/2015091006280116177pic21.png" alt="" /></p>

<p>那么，从商业模式上分析，大公司一般是通过移动端（手机开发SDK）、云端（建立开源物联网云平台）、设备端（物联网连接硬件和软件SDK）、然后使开发者通过众筹方式，开发硬件，但是传递到云端的数据归物联网公司平台拥有。最后通过自己的电商销售渠道卖给用户。通过上述流程物联网生态系统，拥有物联网大数据，在资本市场上大捞一笔。</p>

<p>很显然，如果要研究物联网通讯协议，就必须了解做为展示和输入输出设备的手机端物联网SDK调用，物联网设备端硬件支持的协议SDK、以及云端对以上各种协议支持的具体体现。</p>

<p>国外市面上有很多开源的协议。</p>

<ul>
<li>AllSeen Alliance AllJoyn</li>
<li>开放互联网联盟 Open Interconnect Iotivity</li>
</ul>

<p>国内在这些开源协议之上有建立了一层物联网操作系统。</p>

<ul>
<li>技术型的华为LiteOS，重点在嵌入式物联网设备。（伪开源，到目前为止github上没看到上传的源码）</li>
<li>业务型的京东智能云，重点是通过众筹吸引硬件开发团队合作。通过自己互联网商城销售。</li>
<li>当然还有一些创新型公司</li>
</ul>

<p>那么，我们先分析一下其相关的SDK，是怎么处理数据的：</p>

<h3>（一）物联网终端设计</h3>

<p><img src="http://static.wooyun.org//drops/20150910/2015091006282398045pic31.png" alt="" /></p>

<p>安全层可以看出一般在协MQTT等议栈中实现，如果协议栈中没有实现，那只能在Application SDK API中实现。</p>

<p>在终端实现其安全特性还有几个问题要考虑：</p>

<ol>
<li>物联网终端的内存和硬盘都很有限。</li>
<li>物联网终端电源有限，很多安全设计，例如：心跳检测时间不能太近等。</li>
</ol>

<p>一般和云通讯会有Cloud key 和自己设备本身的private key。通过SSL隧道交换秘钥。</p>

<p><img src="http://static.wooyun.org//drops/20150910/2015091006282718841pic4.jpg" alt="" /></p>

<p>和云端通讯函数。</p>

<p><img src="http://static.wooyun.org//drops/20150910/2015091006282916507pic51.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20150910/2015091006283235660pic61.png" alt="" /></p>

<p>同时，查看了iOS手机端控制部分，由于是部分开源，dot m实现函数已经屏蔽，无法了解其内部逻辑。</p>

<p><img src="http://static.wooyun.org//drops/20150910/2015091006283665069pic7.jpg" alt="" /></p>

<p>小结：由于某云厂商相应的硬件端源码开发不完全，只能看到这些，同时、强烈鄙视这种伪开源的行为。</p>

<p>可以看出使用非对称秘钥加密传输数据到云端。同时，发现设置开发测试模式和生产环境的云端连接域名。当然，证书验证等没看到。</p>

<h3>（二）物联网云端设计</h3>

<p><img src="http://static.wooyun.org//drops/20150910/2015091006284298845pic81.png" alt="" /></p>

<p>云端设计、一般要有几个模块要考虑：</p>

<ol>
<li>账号处理模块：主要是和用户互交。</li>
<li>设备管理模块：绑定用户和设备的关系。</li>
<li>OTA模块：升级固件功能</li>
<li>定时执行模块：定期执行相关任务</li>
<li>大数据分析模块：这个要看具体的应用了，比如说：全国路由器信号排行榜，以及你打败了多少人的路由器。等</li>
</ol>

<p>当然，还有很多功能，就不一一讲解。先举例说明一下OTA模块</p>

<p><strong>No.1 OTA(Over The Air) 服务 推送文件到设备端。</strong></p>

<ul>
<li>@param $deviceId 整数，是要被升级的设备的逻辑ID。</li>
<li>@param $toVersion 字符串，表示升级的目标版本号，如：2-0-3。</li>
<li>@param $OTAHash字符串， 验证逻辑固件。</li>
</ul>

<p>文件存储服务。向BlobStore服务上传文件。</p>

<ul>
<li>@param $bucket 给定的类别名字。</li>
<li>@param $filePath 要被上传的文件的本地路径。</li>
<li>@param $name 可以指定文件被上传后在服务器端的存储名字。如果未指定，则使用从$filePath在提取到的文件名。</li>
</ul>

<p>提供存储服务是为了进行固件升级。同时，物联网硬件开发商可以在自己的私有云中上传固件，然后存储到物联网云平台，更新给联网的物联网终端设备。</p>

<p><strong>No.2 设备管理模块：这里面设计一个带时间限制分享码（其实就是web服务中的session的意思）</strong></p>

<p>设计设备的管理员用户获取设备的分享码。</p>

<ul>
<li>@param $deviceId 要操作的对象的逻辑ID。整数。</li>
<li>@param $user ACUser对象，表示该设备的管理员用户。</li>
<li>@param $timeout 生成的分享码的有效时长。以秒为单位。</li>
</ul>

<p>小结：云端对多租户的设计，主要体现在不同DNS域名隔离不同的企业物联网应用。服务器端么法发现使用HTTPS的通讯协议，难道是云服务商为了节省成本？设备分享码的设计确实很前卫。</p>

<h1>0x02 物联网操作系统安全建议</h1>

<hr />

<p>目前，物联网还在发展之中，把通讯协议直接裸奔在固件上也无可厚非。但是还是有几条提醒各位物联网玩家。</p>

<ol>
<li>当物联网设备无网络连接时、云端立刻通知。</li>
<li>OTA升级、出现重大安全漏洞要厂商直接推送更新固件。</li>
<li>设置强密码Policy 要求12位以上，同时使用数字、特殊符号和字母的组合。如果条件允许尽量使用双因素方式认证（Two-factor authentication）</li>
<li>使用SSL/TLS连接云端传输数据(HTTPS+ AES 128bit encryption)，尽量不要在物联网终端设备上存储数据，以免被黑。如果必须在本地存储请加密，同时加密备份到云端一份。如果再安全一点可以使用TPM处理，把秘钥存储到类似U盘的设备当中做认证。</li>
<li>如果使用SSL，检查两端(服务器和客户端)的证书，不允许使用自签名证书。</li>
<li>云端处理好多租户问题，尽量做到操作系统层面、数据层面的隔离。</li>
</ol>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          